Scenegraph

The scenegraph houses every component you might have in your game, from 3d models over lights to sounds and cameras. A scenegraph consists of a Node objects and these nodes hold Entity objects.

The scenegraph is just a graph of these nodes. The Game class is handling the root node for you, you cannot access this root node directly.

In order to add your components to the scenegraph the Game class provides the add() method or to get components from the scenegraph a get() method. The game just forwards calls to these methods to the root node.

Nodes and Entities

Nodes, often called components, are the building blocks of the scenegraph, they are doing the heavy lifting of managing change, storing references to different AchternEngine parts, etc.

Entities on the other hand are things that the user sees, interacts, heres or influences any of the previous. Entities are any 3D geometry, light, sound source/emitter, fog and even input handlers.

Entities are not part of the scenegraph directly! An entity is added to Node before hand; entities cannot have any children, only the parent node.

In your MyFirstGame class we start of by adding a Node which will hold the Camera Entity and some more stuff.

Every Node has a name associated with it, even if you do not name a node it will get a generic name, e.g. Untitled Node 1.

Transform

It would be pretty boring if every object in your scene would have the same position, this is why every node has its own Transform associated with it, all entities inherit this transform. This transform data is relative to the transform of the parent node in the graph, this "relativity" propagates all the way up to the root node which has the absolute coordinates of (0/0/0), being the center of the 3D world.

All entites in a node share the same transform!

Keep this mind! If you want to have for example two 3D models on top of each other, each will need it's own node. You can then add these two nodes to another parent node, in order to move them both at the same time.

A Transform consists of a position, rotation and scale.